1. Technical Field
The present invention is generally related to computer applications and in particular to spreadsheet applications on a computer system. Still more particularly, the present invention is related to dynamic update of cells within a spreadsheet application via mapping to an external publish/subscribe message source.
2. Description of the Related Art
The use of computer applications and the Internet in every day personal and business applications continues to grow at an astounding pace. One business/technology area in which computer applications are being more and more utilized is that of data compilation and presentation. Software applications, such as spreadsheet applications, for example, have been developed to present a collection of data in an easy to understand format/layout.
Users of spreadsheet applications are provided with individual rows/columns of cells, each of which may be assigned/selected to hold a value of specific data. Once allocated to a cell, the value of the data may be changed within the allocated cell. Additionally, certain cells may be pre-programmed to provide result data that is calculated by an underlying function prescribed by the user. Those skilled in the art are familiar with the data presentation and manipulation features associated with spreadsheet applications.
A spreadsheet application is often used to track data, whose value is frequently changing (i.e., variable data). Financial data, such as stock prices, are an example of data that may be allocated to cells within a spreadsheet, but whose value is variable (i.e., changes over time). It is not uncommon, for example, for a user to use a spreadsheet application on his/her computer to track/view portfolio values (of stocks) in a single interface. Companies may utilize these values within a spreadsheet application to calculate/determine the yields and dividends to pay out to the shareholders of the company, based on some evaluation that requires the current stock price as an input. Individuals and companies alike may utilize this information to determine when to buy and/or sell particular stocks.
These stock values may change on a periodic basis, and the user would prefer to have current values of each stock being tracked within the spreadsheet when the spreadsheet is accessed for stock information. Changing the values within the spreadsheet, however, requires access to the new data value(s) and some method for updating the data within the spreadsheet application. Traditionally, this update would involve the user manually updating each data value as the updated values became available. However, there are spreadsheet-writing protocols to enable programmatic update of the cell values. These spreadsheet-writing protocols are proprietary tools that enable cells within a particular spreadsheet application to be written to. As an example, the HSSF protocol of Apache POI application programming interface (API) enables programmatic writing to cells of a Microsoft Excel spreadsheet.
The updates to the data may be obtained from a variety of different sources, such as the newspaper, television, Internet, or other source. With dynamic changing data such as stock quotes, however, the changing values of the data are oftentimes generated on (or provided by) another computer system, which may broadcast/issue the information for general consumption by interested parties. For example, the stock market computer network of the New York Stock Exchange (NYSE) continuously generates updates to the value of selected ones of the stocks being traded on the US stock market. This information may be provided to the company's or individual's computer system and manually or programmatically updated within the spreadsheet application being used to track the data.
With the traditional and conventional methods, in order to be able to view the current value of the data within his/her spreadsheet application and how that data may affect calculations being performed within the spreadsheet, the user must either (1) manually type in the new value (in place of the older, existing value) in the cell allocated to that data or (2) initiate a programmatic update of the values with the proprietary protocol for updating the cells of the spreadsheet. The timing of this update as well as the “freshness” of the “new” value is dependent on the user. Thus, absent diligent efforts of the user to change the stale values to the new values available, the user's spreadsheet may remain outdated.
When the tracking of data via a spreadsheet application is implemented within a larger business environment, most organizations would prefer their data to be as current as possible. Organizations running time-sensitive business processes, for example, would prefer updates to cell data within their tracking software application to occur on a real time basis. With current spreadsheet applications, even programmatic updates require some levels of manual initiation and manual entering (or loading) of updates to cells. This manual operation requires some level of user-responsiveness to the changing data and may also involve a tedious, labor-intensive process, particularly when entering a large number of variable data. With large organizations that depend on current/up-to-date information, the overall tracking process can become costly in terms of proprietary software required to retrieve the variable data and present it within a specific spreadsheet format. Where some level of manual input is required, some of this cost may be attributed to man-hours spent generating new reports from each update period.
Several messaging protocols exist by which a business/user computer can be sent current updates to particular events in electronic format from a connected network computer generating or reporting the updates. A first such protocol involves a direct point-to-point push of the information from the network computer to the business/user computer. When there are potentially more than one business/user computers to receive information, a recently-developed “subscribe-and-publish” protocol is implemented within a message broker paradigm.
Several conventional message brokers support publish/subscribe messaging paradigm. With the message broker system, a user is able to receive new information or updates to particular information by subscribing to a broker application for receipt of a copy of the updates to the information. Publish/subscribe allows subscribing users to receive the very latest information in an area of interest (for example, stock prices or events such as news flashes or store specials).
A typical publish/subscribe environment has a number of publisher applications sending messages via a broker to a number (potentially a very large number) of subscriber applications located on remote computers across the network. A set of one or more publishers send information to one or more defined message/event brokers, which stores a list of one or more subscribers that have registered their interest in receiving communications of that type. In this case, the subscribers notify the message broker(s) of the message types they wish to receive and this subscription is recorded at the message broker. Publishers send their messages to the message broker, which compares the message type (for example, by checking message header topic fields and/or checking message content) with its stored subscriber information to determine to which subscribers the message should be forwarded. The message broker may perform additional functions, such as filtering, formatting or other processing of received messages before forwarding them to subscribers.
Despite the availability of the publish/subscribe messaging paradigm, there is currently no way for data within a spreadsheet application to be directly updated by incoming data that may be provided as a result of a subscription for updates to that data. While, proprietary software is available to write to a particular spreadsheet application, current implementation does not enable that proprietary software to automatically update a cell within the spreadsheet application with data received from a message broker. The programmatic methods of populating cells within a spreadsheet are thus limited to a particular user-initiation of the update process via a push of the data to the writing protocol.
The present invention recognizes the limitations which exist with updating data values within cells of current spreadsheet applications, and the invention provides a method, system, and program product by which the smallest data unit (cell) of a spreadsheet can be written to with data from an external source. The invention further recognizes the benefits of providing the spreadsheet cell with a scheme for continually enabling dynamic updates to the cell data from an external source following initial set up of that cell for such dynamic updates. The invention further recognizes that it would be desirable to enable a user to select from a provided list of sources/topics to which the cell may be subscribed without the user having to know the exact linking information for the event source. These and other benefits are provided by the invention described herein.